home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_WRGOD.ZIP / Wargods.txt < prev   
Encoding:
Text File  |  1998-01-28  |  6.5 KB  |  137 lines

  1.  
  2. Free Information Xchange '97 presents:
  3.  
  4. WarGods from GT Interactive Software CD crack by Static Vengeance
  5.  
  6. Requirements
  7. Hex Editor and Full install
  8. W32Dasm if you want to follow along
  9.  
  10.     Once again we set out to remove a CD check from a Win95 game.  The whole idea behind
  11. a "Full install" is you will not need the CD, right?  So why do "they" make us get out the
  12. original CD just for check... oh.. there is the music tracks... it is a CD right...  Well I
  13. can do without the music (I have a radio card in my PC, anyways) so I don't want to have to
  14. hunt through my CD's for the WarGod CD.  So I set out to fix that BUG in this otherwise decent
  15. fighter game.  First you will need to disassemble the wargods.exe to see what's going on within
  16. the program.  As usual, the perferred weapon is W32Dasm with it's usefull menu choices.  Once
  17. you have disassembled the executable (wargods.exe) go up to the title bar and select "Refs"
  18. from the menu and drop down to "String data references" from there grab the slider bar and
  19. scroll down to the string "To play War Gods you must close" which is part of the string that
  20. tells you 'To play War Gods you must close all other CD applications and insert the game CD.'
  21. Double clicking this string will put you in the middle of the CD check routine.  That routine
  22. looks like this:
  23.  
  24. * Referenced by a CALL at Address:
  25. |:00416F30   
  26. |
  27. :00416C20 56                      push esi
  28. :00416C21 33C0                    xor eax, eax
  29. :00416C23 57                      push edi
  30. :00416C24 A31C9F4A00              mov dword ptr [004A9F1C], eax
  31.  
  32. * Reference To: USER32.MessageBoxA, Ord:0195h
  33.                                   |
  34. :00416C29 8B3D4C2A9F00            mov edi, dword ptr [009F2A4C]
  35. :00416C2F A3189F4A00              mov dword ptr [004A9F18], eax
  36. :00416C34 A3149F4A00              mov dword ptr [004A9F14], eax
  37. :00416C39 A3109F4A00              mov dword ptr [004A9F10], eax
  38. :00416C3E A3209F4A00              mov dword ptr [004A9F20], eax
  39.  
  40. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  41. |:00416C74(C)
  42. |
  43. :00416C43 E888FCFFFF              call 004168D0     <-- Goes through WINMM.mci to see if
  44. :00416C48 8BF0                    mov esi, eax      <-- there is "cdaudio media present"
  45. :00416C4A E881670100              call 0042D3D0     <-- does "set cdaudio time format tmsf"
  46. :00416C4F A158D64A00              mov eax, dword ptr [004AD658]
  47. :00416C54 8A0D88D64A00            mov cl, byte ptr [004AD688]
  48. :00416C5A 85F6                    test esi, esi
  49. :00416C5C 7404                    je 00416C62
  50. :00416C5E 84C9                    test cl, cl
  51. :00416C60 7514                    jne 00416C76
  52.  
  53. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  54. |:00416C5C(C)
  55. |
  56. :00416C62 6A35                    push 00000035
  57.  
  58. * Possible StringData Ref from Data Obj ->"War Gods Notice"
  59.                                   |
  60. :00416C64 6834A04A00              push 004AA034
  61.  
  62. * Possible StringData Ref from Data Obj ->"To play War Gods you must close "  <-- Don't want to
  63.                                         ->"all other CD applications and "    <-- see this stuff
  64.                                         ->"insert the game CD."               <-- pop up, right?
  65.                                   |
  66. :00416C69 68E09F4A00              push 004A9FE0
  67. :00416C6E 50                      push eax
  68. :00416C6F FFD7                    call edi
  69. :00416C71 83F802                  cmp eax, 00000002
  70. :00416C74 75CD                    jne 00416C43
  71.  
  72. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  73. |:00416C60(C)
  74. |
  75. :00416C76 5F                      pop edi
  76. :00416C77 5E                      pop esi
  77. :00416C78 C3                      ret
  78.  
  79.     Well that was the routine that prints the "insert the game CD" and waits for
  80. your response.  If you hit cancel the game goes into a demo mode and locks out user
  81. response except to quit the game.  That's not what we want... so let's check out the
  82. routine that calls the above section of code:
  83.  
  84. * Referenced by a CALL at Address:
  85. |:0047471A   
  86. |
  87. :00416F30 E8EBFCFFFF              call 00416C20
  88. :00416F35 E976FFFFFF              jmp 00416EB0
  89.  
  90.     Now we might as well see what 416EB0 does... so here is that code:
  91.  
  92. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  93. |:00416F35(U)
  94. |
  95. :00416EB0 33C0                    xor eax, eax
  96. :00416EB2 A32C9F4A00              mov dword ptr [004A9F2C], eax
  97. :00416EB7 A3289F4A00              mov dword ptr [004A9F28], eax
  98. :00416EBC A3249F4A00              mov dword ptr [004A9F24], eax
  99. :00416EC1 A3309F4A00              mov dword ptr [004A9F30], eax
  100. :00416EC6 C3                      ret
  101.  
  102.     If you NOP out the call to 416C20 at 416F30 and let the program fall through to
  103. 416F35 which jumps to 416EB0 (still with me?) the program acts like you hit cancel from
  104. the "insert the game CD" routine.  This just wont do, we want to play the game so it
  105. should be clear we need to prevent both calls from being made.  There is a single call
  106. to that section from 47471A so it's back to more code snooping.. let's go check it out:
  107.  
  108. * Referenced by a CALL at Address:
  109. |:00473A99   
  110. |
  111. :00474710 E8BB9AFFFF              call 0046E1D0
  112. :00474715 E89606FAFF              call 00414DB0
  113. :0047471A E81128FAFF              call 00416F30          <-- Call the CD check routine
  114. :0047471F E8EC18FAFF              call 00416010
  115. :00474724 E8C710FAFF              call 004157F0
  116. :00474729 E9B2C9F8FF              jmp 004010E0
  117.  
  118.     There you see at 47471A is the single call to the CD check and there's no type
  119. of check for any returned value.  So search the wargods.exe file for the call and NOP
  120. it out and give it a try.  And it does remove the copy protection.  The only thing left
  121. is to make the edit to file.  BTW: This edit works for both EXE files on the CD, one is
  122. called hi.exe and the other is lo.exe.  During installation whichever file is copied,
  123. based on user input, is then renamed to wargods.exe
  124.  
  125. Edit wargods.exe at offset 473,882
  126. ==================================
  127. Search for: E8 11 28 FA FF E8 EC
  128. Change to : 90 90 90 90 90 -- --
  129.  
  130.     That takes care of Wargod's CD check!  Now go watch Pagan shake her ... well you
  131. know...  Once again we ventured into the world of copy protect and came out with a new
  132. example of how to defeat it.  One thing I learned from the old'en days of piracy... if
  133. it can be loaded into the machine it can be cracked by someone.  Copy protection only stops
  134. the average person and just slows down a cracker.  And that's how you get WarGods FiX'ed
  135.  
  136. Static Vengeance
  137.